衷于栖
  • 衷于栖
  • 首页
  • 归档
  • 关于

Image
Profile Picture

衷于栖

自由开发者

分类目录

三维技术4 介绍2 应用1 异常1 技术笔记17 游戏2 源码解读3 管理5 读书笔记3 车联网3 转载11 随笔3

热门标签

  • GIT
  • 工作流指南
  • docker
  • SCRUM
  • JT808
  • 百度地图
  • 狼人杀
  • 模型数据结构
  • 敏捷
  • 扩展
  • 学习WEBGL系列
  • 可维护
  • GlTF
  • CentOS
  • 高德地图
  • 集中式
  • 郭麒麟
  • 郭德纲
  • 进阶
  • 路由节点编辑器

微信订阅

Image

友情链接

王海达博客 Steve Yegge Debug 客栈 Codelei's Blog 笛卡尔积 Java九点半课堂 薛定喵君

【Spring】使用 ANT 构建 Spring Boot 工程

2020-04-19     技术笔记


这件事可做,但是做的时候有点无奈而已。

我知道你一定会说,用 maven 就行了为什么还要用 ant,变态......不巧的是,某银行就有这方面的要求。所以还是回忆了一下这个技术。

首先原来的项目是基于 maven 的,所以第一步就是下载依赖,然后是打包成 spring 的 jar 包。

需要两个额外的 jar 包,放在 bin 目录下:

  • maven-ant-tasks-2.1.3.jar
  • spring-boot-antlib-2.0.5.RELEASE.jar

ant 使用 build 作为输出的目录结构,区别于 target。

下面是 build.xml 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:artifact="antlib:org.apache.maven.artifact.ant"
xmlns:spring-boot="antlib:org.springframework.boot.ant"
name="projectName" default="default" basedir="bin">
<description>Builds, tests, and runs the project dsolrcloud.</description>

<!-- 配置开发环境 -->
<property environment="env"/>

<property name="spring-boot.version" value="2.0.5.RELEASE" />

<property name="version" value="1.0"/>
<property name="project" value="projectName"/>
<property name="package" value="projectName"/>
<property name="domain" value="com.zhoyq"/>

<!-- 项目源代码目录 -->
<property name="src.dir" location="${user.dir}/src/main/java"/>
<!-- javac编译后生成的class文件路径 -->
<property name="build.dir" location="${user.dir}/build/classes" />
<!-- 最终生成jar包的路径 -->
<property name="dist.dir" location="${user.dir}/build/dist"/>
<!-- 项目配置文件路径 -->
<property name="config.dir" location="${user.dir}/src/main/resources" />
<!-- 项目生成JavaDoc文件路径 -->
<property name="doc.dir" location="${user.dir}/build/doc"/>

<!-- maven-ant-tasks 下载maven依赖jar包的存放路径 -->
<property name="lib.dir" location="${user.dir}/build/dependency"/>

<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
</path>

<target name="clean" description="清理ant编译文件">
<delete dir="${user.dir}/build" />
</target>

<target name="mkdir" description="建立文件夹">
<mkdir dir="${dist.dir}"/>
<mkdir dir="${build.dir}"/>
<mkdir dir="${lib.dir}"/>
<mkdir dir="${doc.dir}"/>
</target>

<target name="dependency" depends="mkdir" description="配置ant自动下载maven的依赖包">
<!-- 下载maven依赖-->
<path id="maven-ant-tasks.classpath" path="${user.dir}/bin/maven-ant-tasks-2.1.3.jar" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
classpathref="maven-ant-tasks.classpath" />

<artifact:dependencies filesetId="mavenlib" pathId="mavenclasspath" useScope="runtime">
<pom file="${user.dir}/pom.xml" />
</artifact:dependencies>

<copy todir="${lib.dir}">
<fileset refid="mavenlib" />
<mapper type="flatten" />
</copy>
</target>

<target name="compile" depends="dependency" description="编译代码">
<!-- 编译所有的Java代码 -->
<javac srcdir="${src.dir}"
destdir="${build.dir}"
encoding="UTF-8"
includeantruntime="no"
excludes="**/test/*,**/test/bean/*,**/*.svn,*.svn"
includes="**/*.java"
source="1.8"
target="1.8"
deprecation="true"
failonerror="true"
debug="true">
<classpath refid="classpath" />
</javac>

<!-- 把所有文件copy到build目录 -->
<copy todir="${build.dir}">
<fileset dir="${config.dir}" includes="**/*"/>
</copy>
</target>

<!-- 生成Javadoc 文档 -->
<target name="javadoc" description="生成Javadoc文档">
<delete dir="${doc.dir}"/>
<mkdir dir="${doc.dir}"/>
<javadoc packagenames="com.zhoyq.*" sourcepath="${src.dir}" destdir="${doc.dir}"
windowtitle="${project} Javadoc" use="yes"
linksource="no" splitindex="yes" encoding="UTF-8"
docencoding="GBK" locale="zh_CN">
<classpath refid="classpath"/>
<packageset dir="${src.dir}" defaultexcludes="yes">
<include name="${domain}/${package}/**"/>
</packageset>
</javadoc>
</target>

<target name="package" depends="compile" description="打jar包" >
<tstamp>
<format property="TIME" pattern="yyMMddHHmm"/>
</tstamp>
<path id="spring-boot-antlib.classpath" path="${user.dir}/bin/spring-boot-antlib-2.0.5.RELEASE.jar" />
<typedef resource="org/springframework/boot/ant/antlib.xml"
uri="antlib:org.springframework.boot.ant"
classpathref="spring-boot-antlib.classpath" />

<spring-boot:exejar destfile="${dist.dir}/${project}-${version}-${TIME}.jar"
classes="${build.dir}"
start-class="com.zhoyq.App">
<lib>
<fileset dir="${lib.dir}" />
</lib>
</spring-boot:exejar>
</target>

<target name="default" depends="clean, package, javadoc">

</target>

</project>

修改对应参数,然后运行 ant 即可。

#Spring #Spring Boot #Ant

Copyright © 2021 zhoyq.com. All rights reserved.

京ICP备 17068495号-1